로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
미니프로젝트 4 | ✅ 저자: 이유정(박사)
프로젝트 코드명: `MULTIPLE_CHIICE_QUIZ_V4 프로젝트 유형: 조건문 반복문 통합 실습 미니 프로젝트
🖥️ 프로젝트 개요
"간이 퀴즈 게임 시스템"
사용자에게 간단한 퀴즈를 5개 출제하고,정답 여부에 따라 점수를 계산해
최종 점수를 출력하는 콘솔 기반 게임입니다.
◽ 이 프로젝트를 통해 자연스럽게 적용되는 내용
항목 | 사용 예시 |
---|---|
for문 |
문제 5개를 반복 출제 |
while문 |
유효한 답변을 받을 때까지 입력 반복 |
조건문 if |
정답 여부 판단 / 재도전 여부 확인 |
📄 기능 요구사항 (Functional Requirements)
- 문제는 5개이며,
for문
으로 차례대로 출제 - 사용자는 각 문제에 답변을 입력
- 정답일 경우 점수 +1
- 오답일 경우 정답을 알려줌
- 퀴즈가 끝나면 최종 점수를 출력
- 마지막에
"다시 하시겠습니까? (y/n)"
을 입력받아y
면 다시 시작,n
이면 종료
📄 비기능 요구사항 (Non-Functional Requirements)
- 사용자 입력은
strip()
으로 앞뒤 공백 제거 - 대소문자 구분 없이 답을 처리
- 숫자 이외의 입력을 받을 때도 오류 없이 진행
- 최소한의 가독성 있는 출력 형식 유지
✅ 출력 포맷 구성 1:
[퀴즈 1] 파이썬에서 리스트를 만드는 기호는?
① () ② {} ③ [] ④ <>
정답 입력: 3
✅ 정답입니다!
[퀴즈 2] 파이썬에서 반복문은 어떤 키워드로 시작하나요?
① repeat ② loop ③ while ④ for
정답 입력: 4
✅ 정답입니다!
...
총 5문제 중 4문제를 맞혔습니다.
👏 잘하셨어요!
다시 하시겠습니까? (y/n): y
✅ 정답 코드1: 난이도 중
questions = [
{
"question": "파이썬에서 문자를 묶는 기호는 무엇인가요?",
"options": ["[]", '""', "{}", "//"],
"answer": 2
},
{
"question": "print() 함수는 어떤 역할을 하나요?",
"options": ["입력받기", "저장하기", "출력하기", "삭제하기"],
"answer": 3
},
{
"question": "변수는 어떤 역할을 하나요?",
"options": ["문서 작성", "값을 저장하는 공간", "반복 실행", "조건 분기"],
"answer": 2
},
]
while True:
score = 0
for idx, q in enumerate(questions):
print(f"\n[퀴즈 {idx+1}] {q['question']}")
for i, option in enumerate(q["options"], start=1):
print(f"{i}. {option}")
while True:
try:
user_input = int(input("정답 입력 (숫자): ").strip())
if 1 <= user_input <= 4:
break
else:
print("1~4 사이 숫자를 입력해주세요.")
except ValueError:
print("숫자만 입력해주세요.")
if user_input == q["answer"]:
print("✅ 정답입니다!")
score += 1
else:
print(f"❌ 오답입니다. 정답은 {q['answer']}번입니다.")
print(f"\n총 {len(questions)}문제 중 {score}문제를 맞혔습니다.")
retry = input("다시 하시겠습니까? (y/n): ").strip().lower()
if retry != 'y':
print("프로그램을 종료합니다.")
break
✅ 정답 코드2: 난이도 중상
questions = [
{
"question": "파이썬에서 리스트를 만드는 기호는?",
"options": ["()", "{}", "[]", "<>"],
"answer": 3
},
{
"question": "파이썬에서 반복문은 어떤 키워드로 시작하나요?",
"options": ["repeat", "loop", "while", "for"],
"answer": 4
},
{
"question": "조건문을 시작하는 키워드는?",
"options": ["if", "when", "check", "cond"],
"answer": 1
},
{
"question": "while문은 어떤 조건에서 반복을 멈추나요?",
"options": ["무한", "False가 되면", "오류 발생 시", "리스트가 끝나면"],
"answer": 2
},
{
"question": "for문에서 range(3)의 결과는?",
"options": ["1, 2, 3", "0, 1, 2", "0~3", "에러남"],
"answer": 2
},
]
while True:
score = 0
for idx, q in enumerate(questions):
print(f"[퀴즈 {idx+1}] {q['question']}")
for i, option in enumerate(q["options"], start=1):
print(f"{i}. {option}")
while True:
try:
user_input = int(input("정답 입력 (숫자): ").strip())
if 1 <= user_input <= 4:
break
else:
print("1~4 중에서 입력해주세요.")
except ValueError:
print("숫자만 입력해주세요.")
if user_input == q["answer"]:
print("✅ 정답입니다!\n")
score += 1
else:
print(f"❌ 오답입니다. 정답은 {q['answer']}번입니다.\n")
print(f"총 {len(questions)}문제 중 {score}문제를 맞혔습니다.\n")
retry = input("다시 하시겠습니까? (y/n): ").strip().lower()
if retry != 'y':
print("프로그램을 종료합니다.")
break